//该文件主要用于创建并导出Store的实例对象，我们一般称为store
import Vue from 'vue'
import Vuex,{Store} from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Store({
  // actions中的方法，用于响应组件中的“动作” ——  服务员
  actions:{
    // 奇数再加-服务员
    jijia(context,value){
      console.log('jijia服务员')
      if(context.state.sum % 2){
        context.commit('JIA',value)
      }
    },
    // 等一等（异步）再加-服务员
    dengjia({commit},value){
      console.log('dengjia服务员')
      setTimeout(() => {
        commit('JIA',value)
      }, 1000);
    },
    // 联系服务后（异步），再加 — 服务员
    fuwujia({commit}){
      axios.get('https://api.uomg.com/api/rand.qinghua?format=json').then(
        response => {
          console.log('ok',response.data.content)
          commit('JIA',response.data.content.length)
        },
        error => {console.log('err',error)}
      )
    }
  },
  // mutations中的方法，用于真正去修改数据
  mutations:{
    // 负责加法运算的厨师
    JIA(state,value){
      console.log('JIA厨师')
      state.sum += value
    },
    // 负责减法运算的厨师
    JIAN(state,value){
      console.log('JIAN厨师')
      state.sum -= value
    }
  },
  // state是Vuex中的核心，用于保存数据
  state:{
    sum:0,
    school:'atguigu',
  },
  getters:{
    bigSum(state){
      return state.sum * 10
    },
    upperSchool(state){
      return state.school.toUpperCase()
    }
  }
})